/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2023 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Co., Ltd.
 */
#include <common.h>
#include <command.h>




#define MODULUS_DDR_ADDR					(0x80000000 + 0xFC)		/*modulus drr addr,MODULUS  end data start*/
#define PUBLIC_DDR_ADDR						(0x80000100)			/*public drr addr*/
#define OTP_WAIT_FOR_TIMEOUT				(500)					/*read timeout 500ms*/
#define OTP_BASE_ADDR						(0x1E6F2000)			/*Secure base addr*/
#define OTP_WR_RD_CMD_ADDR					(OTP_BASE_ADDR + 0x10)	/*opt WR & RD cmd addr*/
#define OTP_ADDR							(OTP_BASE_ADDR + 0x14)	/*opt WR & RD addr*/
#define OTP_DATA_IN_ADDR				(OTP_BASE_ADDR + 0x18)		/*opt WR in addr*/
#define OTP_DATA_OUT_ADDR				(OTP_BASE_ADDR + 0x1C)		/*opt RD out addr*/
#define OTP_PROGRAM_EN_ADDR				(OTP_BASE_ADDR + 0x20)		/*opt program en addr*/
#define OTP_CONTROL_ADDR				(OTP_BASE_ADDR + 0x24)		/*opt SOftware reset addr*/
#define OTP_BUSY_STATE_ADDR				(OTP_BASE_ADDR + 0x28)		/*opt basy state addr*/
#define OTP_IRQ_STATE_ADDR				(OTP_BASE_ADDR + 0x2C)		/*opt rw data finish irq addr*/
#define OTP_ERROR_STATE_ADDR				(OTP_BASE_ADDR + 0x30)	/*opt program error addr*/



#define OTP_USER_DATE_START_ADDR			0X420				/*OTP use data area*/
#define OTP_USER_MODULUS_START_ADDR			0X420				/*OTP use modulus data area*/
#define OTP_USER_PUBLIC_START_ADDR			0X470				/*OTP use public key data area*/
#define OTP_KEY_PUBLIC_START_ADDR			0X20				/*OTP OTP public key data area*/
#define OTP_KEY_MODULUS_START_ADDR			0X60				/*OTP OTP public key data area*/
#define OTP_KEY_OFFSET					0X80				/*OTP OTP key data offset*/


typedef enum EnOptBusyState_t			//otp busy state
{
	OPT_IDLE = 0,				//otp idle
	OPT_BUSY,				//otp busying
	OPT_STATE_NUM				//otp busy state num
}EnOptBusyState;



//****************************************************************
//Function: 		WaitOtpIdleState
//Description:		wait fot otp idle
//Author:		lihh
//Date:			2022/2/21     
//Input:		NUll
//Output:		NUll
//Return:		EnOptBusyState
//****************************************************************
static EnOptBusyState WaitOtpIdleState(void)
{
	int timers = OTP_WAIT_FOR_TIMEOUT;

	while((*((volatile unsigned int*)OTP_BUSY_STATE_ADDR) != 0)&&(timers > 0))
	{
		timers -= 10;
		udelay(10000);
	}
	printf("GetOtpBusyState: %d\n",*((volatile unsigned int*)OTP_BUSY_STATE_ADDR));
	return (EnOptBusyState)(*((volatile unsigned int*)OTP_BUSY_STATE_ADDR));
}


//****************************************************************
//Function: 		CheckKeyAreaOtpVaild
//Description:		check use area data valid
//Author:		lihh
//Date:			2022/2/21     
//Input:		NUll
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool CheckKeyAreaOtpVaild(void)
{
	printf("CheckKeyAreaOtpVaild\n");	

	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return false;
	}

	*((volatile unsigned int*)OTP_ADDR) = 0;
	*((volatile unsigned int*)OTP_WR_RD_CMD_ADDR) = 0x4C696477;
	
	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return false;
	}
	
	printf("1 OTP_DATA_OUT_ADDR: 0x%x \n",*((volatile unsigned int*)OTP_DATA_OUT_ADDR));
	if(0x01 == ((*((volatile unsigned int*)OTP_DATA_OUT_ADDR) >> 23) & 0x01))
	{
		printf("key area can not write \n");
		return false;
	}
	
	return true;
}


//****************************************************************
//Function: 		CheckUsrAreaOtpVaild
//Description:		check use area data valid
//Author:		lihh
//Date:			2022/2/21     
//Input:		NUll
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool CheckUsrAreaOtpVaild(void)
{
	printf("CheckUsrAreaOtpVaild\n");	

	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return false;
	}

	*((volatile unsigned int*)OTP_ADDR) = 0;
	*((volatile unsigned int*)OTP_WR_RD_CMD_ADDR) = 0x4C696477;
	
	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return false;
	}
	
	printf("1 OTP_DATA_OUT_ADDR: 0x%x \n",*((volatile unsigned int*)OTP_DATA_OUT_ADDR));
	if(0x01 == ((*((volatile unsigned int*)OTP_DATA_OUT_ADDR) >> 19) & 0x01))
	{
		printf("user area can not write \n");
		return false;
	}
	
	return true;
}

//****************************************************************
//Function: 		WriteUserOneData
//Description:		write use area data
//Author:		lihh
//Date:			2022/2/21      
//Input:		addr & value
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool WriteKeyOneData(unsigned int addr, unsigned int value)
{
	*((volatile unsigned int*)OTP_PROGRAM_EN_ADDR) = 0xD4ADD7D3;

	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return false;
	}
	
	*((volatile unsigned int*)OTP_ADDR) = addr;
	*((volatile unsigned int*)OTP_DATA_IN_ADDR) = value;
	*((volatile unsigned int*)OTP_WR_RD_CMD_ADDR) = 0xB5C6CEB0;

	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		*((volatile unsigned int*)OTP_PROGRAM_EN_ADDR) = 0x00;
		return false;
	}
	*((volatile unsigned int*)OTP_PROGRAM_EN_ADDR) = 0x00;
	
	return true;
}

//****************************************************************
//Function: 		ReadUserAreaData
//Description:		Read use area valid
//Author:		lihh
//Date:			2022/2/21      
//Input:		addr
//Output:		NUll
//Return:		unsigned int
//****************************************************************
static unsigned int ReadKeyAreaData(unsigned int addr)
{
	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return -1;
	}
	*((volatile unsigned int*)OTP_ADDR) = addr;
	*((volatile unsigned int*)OTP_WR_RD_CMD_ADDR) = 0x4C696477;
	if(OPT_BUSY == WaitOtpIdleState())
	{
		printf("WaitOtpIdleState fail\n");
		return -1;
	}
	//printf("3 OTP_DATA_OUT_ADDR: 0x%x \n",*((unsigned int*)OTP_DATA_OUT_ADDR));
	return (volatile unsigned int)(*((unsigned int*)OTP_DATA_OUT_ADDR));
}

//****************************************************************
//Function: 		ReverseIntByte
//Description:		big small range change
//Author:		lihh
//Date:			2022/2/21      
//Input:		value
//Output:		NUll
//Return:		unsigned int
//****************************************************************
unsigned int ReverseIntByte(unsigned int value)
{
	unsigned int ret = 0;
	ret += (value & 0xFF);
	ret <<= 8;
	ret += ((value >> 8) & 0xFF);
	ret <<= 8;
	ret += ((value >> 16) & 0xFF);
	ret <<= 8;
	ret += ((value >> 24) & 0xFF);
	
	return ret;
}



//****************************************************************
//Function: 		WriteUserAreaData
//Description:		write key area data
//Author:		lihh
//Date:			2022/2/21      
//Input:		offset
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool WriteKeyAreaData(unsigned int offset)
{
	printf("WriteKeyAreaData\n");
	if(true == CheckKeyAreaOtpVaild())
	{
		unsigned int *data = (unsigned int*)MODULUS_DDR_ADDR;
		unsigned int addr = OTP_KEY_MODULUS_START_ADDR + offset * 0x80;
		unsigned int value = 0;
		//update modulus
		for(int i=0; i<64; i++)
		{
			value = *((volatile unsigned int*)data);
			value = ReverseIntByte(value);
			printf("modulus addr:0x%0x,value:0x%08x\n",addr,value);
			if(false == WriteKeyOneData(addr, value))
			{
				printf("error in WriteUserOneData failed!\n");
				return false;
			}
			
			int value2 = ReadKeyAreaData(addr);
			if(value != value2)
			{
				printf("value:[0x%x] != value2[0x%x]!\n",value,value2);
			}

			data--;
			addr++;
		}
		//update public
		addr =  OTP_KEY_PUBLIC_START_ADDR+ offset * 0x80;
		data = (unsigned int*)PUBLIC_DDR_ADDR;	
		for(int i=0; i<64; i++)
		{
			value = *((unsigned int*)data);
			value = ReverseIntByte(value);
			printf("public addr:0x%0x,value:0x%08x\n",addr,value);
			if(false == WriteKeyOneData(addr, value))
			{
				printf("error in WriteUserOneData failed!\n");
				return false;
			}
			int value2 = ReadKeyAreaData(addr);
			if(value != value2)
			{
				printf("value:[0x%x] != value2[0x%x]!\n",value,value2);
			}			

			data++;
			addr++;
		}
		
	}
	return true;
}

//****************************************************************
//Function: 		WriteOtpCfg
//Description:		WriteOtpCfg
//Author:		lihh
//Date:			2022/2/21      
//Input:		NUll
//Output:		NUll
//Return:		true or false
//****************************************************************
void WriteOtpCfg(void)
{
	unsigned int addr = 0;
	unsigned int value = 0; 
	value = (1 << 23);		

	if(false == WriteKeyOneData(addr, value))
	{
		printf("error in WriteUserOneData failed!\n");
	}
}
//****************************************************************
//Function: 		WriteUserAreaData
//Description:		write use area data
//Author:		lihh
//Date:			2022/2/21      
//Input:		NUll
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool WriteUserAreaData(void)
{
	printf("WriteUserAreaData\n");
	if(true == CheckUsrAreaOtpVaild())
	{
		unsigned int *data = (unsigned int*)MODULUS_DDR_ADDR;
		unsigned int addr = OTP_USER_MODULUS_START_ADDR;
		unsigned int value = 0;
		//update modulus
		for(int i=0; i<64; i++)
		{
			value = *((volatile unsigned int*)data);
			value = ReverseIntByte(value);
			printf("modulus addr:0x%0x,value:0x%08x\n",addr,value);
			if(false == WriteKeyOneData(addr, value))
			{
				printf("error in WriteUserOneData failed!\n");
				return false;
			}
			
			int value2 = ReadKeyAreaData(addr);
			if(value != value2)
			{
				printf("value:[0x%x] != value2[0x%x]!\n",value,value2);
			}

			data--;
			addr++;
		}
		//update public
		addr =  OTP_USER_PUBLIC_START_ADDR;
		data = (unsigned int*)PUBLIC_DDR_ADDR;			
		for(int i=0; i<64; i++)
		{
			value = *((volatile unsigned int*)data);
			value = ReverseIntByte(value);
			printf("public addr:0x%0x,value:0x%08x\n",addr,value);
			if(false == WriteKeyOneData(addr, value))
			{
				printf("error in WriteUserOneData failed!\n");
				return false;
			}
			int value2 = ReadKeyAreaData(addr);
			if(value != value2)
			{
				printf("value:[0x%x] != value2[0x%x]!\n",value,value2);
			}			

			data++;
			addr++;
		}
	}
	return true;
}




//****************************************************************
//Function: 		UpdateKeyAreaData
//Description:		get use area data
//Author:		lihh
//Date:			2022/2/21      
//Input:		offset
//Output:		NUll
//Return:		true or false
//****************************************************************
static bool UpdateKeyAreaData(unsigned int offset)
{
	unsigned int addr = OTP_KEY_MODULUS_START_ADDR + offset * 0x80;
	unsigned int value = 0;
	//update modulus
	for(int i=0; i<64; i++)
	{
		value = ReadKeyAreaData(addr);
		printf(" addr:0x%0x,value:0x%x\n",addr,value);
		addr++;
	}
	//update public
	addr =  OTP_KEY_PUBLIC_START_ADDR+ offset * 0x80;
	for(int i=0; i<64; i++)
	{
		value = ReadKeyAreaData(addr);
		printf(" addr:0x%0x,value:0x%x\n",addr,value);
		addr++;
	}
	return true;
}
//****************************************************************
//Function: 		UssagePrintf
//Description:		show ussage
//Author:		lihh
//Date:			2022/3/1      
//Input:		NUll
//Output:		NUll
//Return:		NUll
//****************************************************************
static void UssagePrintf(void)
{
	printf("read  otp key  value  :otpcmd read cfg\n");
	printf("read  otp key  value  :otpcmd read id(0 - 7)\n");
	printf("write otp key  value  :otpcmd write id(0 - 7)\n");
	printf("write otp cfg  value  :otpcmd enable cfg\n");
	printf("test  otp SHA1	      :otpcmd sha1 test\n");
}

//****************************************************************
//Function: 		ShowKeyInfo
//Description:		show key info
//Author:		lihh
//Date:			2022/3/1      
//Input:		NUll
//Output:		NUll
//Return:		NUll
//****************************************************************
static void ShowKeyInfo(void)
{
	unsigned int Value = ReadKeyAreaData(0x00);
	unsigned int KeyCfg = (Value >> 23) & 0x01;
	if(KeyCfg)
	{
		printf("Protect otp key zone protected\n");
	}
	else
	{
		printf("Protect otp key zone not protected\n");
	}	
}

void test(void);

//****************************************************************
//Function: 		DoMyCmd
//Description:		cmd runing
//Author:		lihh
//Date:			2022/3/1      
//Input:		cmdtp flag argc argv
//Output:		NUll
//Return:		int
//****************************************************************
int DoMyCmd(cmd_tbl_t *cmdtp, int flag, int argc,
		       char * const argv[])
{
	printf("do_my_cmd \n");

	if(argc <= 2)
	{
		UssagePrintf();
	}
	else if(0 == strncmp(argv[1],"sha1",strlen("sha1")))
	{
		test();
	}
	else if(0 == strncmp(argv[1],"read",strlen("read")))
	{
		if(0 == strncmp(argv[2],"cfg",strlen("cfg")))
		{
			ShowKeyInfo();
			UssagePrintf();
		}
		else if((char)*argv[2] >= '0' && (char)*argv[2] <= '7')
		{
			UpdateKeyAreaData((char)*argv[2] - '0');
		}
		else
		{
			printf("Unvaild params!\n");
			UssagePrintf();
		}
	}
	else if(0 == strncmp(argv[1],"write",strlen("write")))
	{
		if((char)*argv[2] >= '0' && (char)*argv[2] <= '7')
		{
			WriteKeyAreaData((char)*argv[2] - '0');
		}
		else if(0 == strncmp(argv[2],"user",strlen("user")))
		{
			WriteUserAreaData();
		}
		else
		{
			printf("Unvaild params!\n");
			UssagePrintf();
		}	
	}
	else if(0 == strncmp(argv[1],"enable",strlen("enable")))
	{
		if(0 == strncmp(argv[2],"cfg",strlen("cfg")))
		{
			WriteOtpCfg();
		}
		else
		{
			printf("Unvaild params!\n");
			UssagePrintf();
		}
	}
	else 
	{
		printf("Unvaild params!\n");
		UssagePrintf();
	}

	return 0;
}


U_BOOT_CMD(
	otpcmd, 6, 0, DoMyCmd,
	"otp operation",
	"otp read & write"
);

#define ECC_BASE_ADDR               0x1E710000  //reg

#define R_REG0            0x00000000      //31:0   RW 签名r值的位域[31:0]
#define R_REG1            0x00000004      //31:0   RW 签名r值的位域[63:32]
#define R_REG2            0x00000008      //31:0   RW 签名r值的位域[95:64]
#define R_REG3            0x0000000c     //31:0   RW 签名r值的位域[127:96]
#define R_REG4            0x00000010     //31:0   RW 签名r值的位域[159:128]
#define R_REG5            0x00000014     //31:0   RW 签名r值的位域[191:160]
#define R_REG6            0x00000018     //31:0   RW 签名r值的位域[223:192]
#define R_REG7            0x0000001c     //31:0   RW 签名r值的位域[255:224]
#define S_REG0            0x00000020     //31:0   RW 签名s值的位域[31:0]
#define S_REG1            0x00000024     //31:0   RW 签名s值的位域[63:32]
#define S_REG2            0x00000028     //31:0   RW 签名s值的位域[95:64]
#define S_REG3            0x0000002c     //31:0   RW 签名s值的位域[127:96]
#define S_REG4            0x00000030     //31:0   RW 签名s值的位域[159:128]
#define S_REG5            0x00000034     //31:0   RW 签名s值的位域[191:160]
#define S_REG6            0x00000038     //31:0   RW 签名s值的位域[223:192]
#define S_REG7            0x0000003c     //31:0   RW 签名s值的位域[255:224]
#define HASH_REG0         0x00000040     //31:0   RW 存放由数据产生的哈希值的位域[31:0]
#define HASH_REG1         0x00000044     //31:0   RW 存放由数据产生的哈希值的位域[63:32]
#define HASH_REG2         0x00000048    //31:0   RW 存放由数据产生的哈希值的位域[95:64]
#define HASH_REG3         0x0000004c    //31:0   RW 存放由数据产生的哈希值的位域[127:96]
#define HASH_REG4         0x00000050    //31:0   RW 存放由数据产生的哈希值的位域[159:128]
#define HASH_REG5         0x00000054    //31:0   RW 存放由数据产生的哈希值的位域[191:160]
#define HASH_REG6         0x00000058    //31:0   RW 存放由数据产生的哈希值的位域[223:192]
#define HASH_REG7         0x0000005c    //31:0   RW 存放由数据产生的哈希值的位域[255:224]
#define PUBLIC_KEY_X_REG0 0x00000060    //31:0   RW 公钥值寄存器的位域[31:0]
#define PUBLIC_KEY_X_REG1 0x00000064    //31:0   RW 公钥值寄存器的位域[63:32]
#define PUBLIC_KEY_X_REG2 0x00000068    //31:0   RW 公钥值寄存器的位域[95:64]
#define PUBLIC_KEY_X_REG3 0x0000006c    //31:0   RW 公钥值寄存器的位域[127:96]
#define PUBLIC_KEY_X_REG4 0x00000070    //31:0   RW 公钥值寄存器的位域[159:128]
#define PUBLIC_KEY_X_REG5 0x00000074    //31:0   RW 公钥值寄存器的位域[191:160]
#define PUBLIC_KEY_X_REG6 0x00000078    //31:0   RW 公钥值寄存器的位域[223:192]
#define PUBLIC_KEY_X_REG7 0x0000007c    //31:0   RW 公钥值寄存器的位域[255:224]
#define PUBLIC_KEY_Y_REG0 0x00000080    //31:0   RW  私钥值寄存器的位域[31:0]
#define PUBLIC_KEY_Y_REG1 0x00000084    //31:0   RW  私钥值寄存器的位域[63:32]
#define PUBLIC_KEY_Y_REG2 0x00000088    //31:0   RW  私钥值寄存器的位域[95:64]
#define PUBLIC_KEY_Y_REG3 0x0000008c    //31:0   RW  私钥值寄存器的位域[127:96]
#define PUBLIC_KEY_Y_REG4 0x00000090    //31:0   RW  私钥值寄存器的位域[159:128]
#define PUBLIC_KEY_Y_REG5 0x00000094    //31:0   RW  私钥值寄存器的位域[191:160]
#define PUBLIC_KEY_Y_REG6 0x00000098    //31:0   RW  私钥值寄存器的位域[223:192]
#define PUBLIC_KEY_Y_REG7 0x0000009c    //31:0   RW  私钥值寄存器的位域[255:224]
#define PRIVATE_KEY_REG0  0x000000a0    //31:0   W  随机数值寄存器的位域[31:0]
#define PRIVATE_KEY_REG1  0x000000a4    //31:0   W  随机数值寄存器的位域[63:32]
#define PRIVATE_KEY_REG2  0x000000a8    //31:0   W  随机数值寄存器的位域[95:64]
#define PRIVATE_KEY_REG3  0x000000ac    //31:0   W  随机数值寄存器的位域[127:96]
#define PRIVATE_KEY_REG4  0x000000b0    //31:0   W  随机数值寄存器的位域[159:128]
#define PRIVATE_KEY_REG5  0x000000b4    //31:0   W  随机数值寄存器的位域[191:160]
#define PRIVATE_KEY_REG6  0x000000b8    //31:0   W  随机数值寄存器的位域[223:192]
#define PRIVATE_KEY_REG7  0x000000bc    //31:0   W  随机数值寄存器的位域[255:224]
#define RANDROM_VALUE0    0x000000c0    //31:0   W 椭圆曲线参数p值寄存器的位域[31:0]
#define RANDROM_VALUE1    0x000000c4    //31:0   W 椭圆曲线参数p值寄存器的位域[63:32]
#define RANDROM_VALUE2    0x000000c8    //31:0   W 椭圆曲线参数p值寄存器的位域[95:64]
#define RANDROM_VALUE3    0x000000cc    //31:0   W 椭圆曲线参数p值寄存器的位域[127:96]
#define RANDROM_VALUE4    0x000000d0    //31:0   W 椭圆曲线参数p值寄存器的位域[159:128]
#define RANDROM_VALUE5    0x000000d4    //31:0   W 椭圆曲线参数p值寄存器的位域[191:160]
#define RANDROM_VALUE6    0x000000d8    //31:0   W 椭圆曲线参数p值寄存器的位域[223:192]
#define RANDROM_VALUE7    0x000000dc    //31:0   W 椭圆曲线参数p值寄存器的位域[255:224]
#define P_VALUE0          0x000000e0    //31:0   RW 椭圆曲线参数a值寄存器的位域[31:0]
#define P_VALUE1          0x000000e4    //31:0   RW 椭圆曲线参数a值寄存器的位域[63:32]
#define P_VALUE2          0x000000e8    //31:0   RW 椭圆曲线参数a值寄存器的位域[95:64]
#define P_VALUE3          0x000000ec    //31:0   RW 椭圆曲线参数a值寄存器的位域[127:96]
#define P_VALUE4          0x000000f0    //31:0   RW 椭圆曲线参数a值寄存器的位域[159:128]
#define P_VALUE5          0x000000f4    //31:0   RW 椭圆曲线参数a值寄存器的位域[191:160]
#define P_VALUE6          0x000000f8    //31:0   RW 椭圆曲线参数a值寄存器的位域[223:192]
#define P_VALUE7          0x000000fc    //31:0   RW 椭圆曲线参数a值寄存器的位域[255:224]
#define A_VALUE0          0x00000100    //31:0   RW 椭圆曲线参数b值寄存器的位域[31:0]
#define A_VALUE1          0x00000104    //31:0   RW 椭圆曲线参数b值寄存器的位域[63:32]
#define A_VALUE2          0x00000108    //31:0   RW 椭圆曲线参数b值寄存器的位域[95:64]
#define A_VALUE3          0x0000010c    //31:0   RW 椭圆曲线参数b值寄存器的位域[127:96]
#define A_VALUE4          0x00000110    //31:0   RW 椭圆曲线参数b值寄存器的位域[159:128]
#define A_VALUE5          0x00000114    //31:0   RW 椭圆曲线参数b值寄存器的位域[191:160]
#define A_VALUE6          0x00000118    //31:0   RW 椭圆曲线参数b值寄存器的位域[223:192]
#define A_VALUE7          0x0000011c    //31:0   RW 椭圆曲线参数b值寄存器的位域[255:224]
#define GX_VALUE0         0x00000120 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[31:0]
#define GX_VALUE1         0x00000124 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[63:32]
#define GX_VALUE2         0x00000128 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[95:64]
#define GX_VALUE3         0x0000012c //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[127:96]
#define GX_VALUE4         0x00000130 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[159:128]
#define GX_VALUE5         0x00000134 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[191:160]
#define GX_VALUE6         0x00000138 //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[223:192]
#define GX_VALUE7         0x0000013c //31:0   RW 椭圆曲线参数基点G的x坐标值寄存器的位域[255:224]
#define GY_VALUE0         0x00000140 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[31:0]
#define GY_VALUE1         0x00000144 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[63:32]
#define GY_VALUE2         0x00000148 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[95:64]
#define GY_VALUE3         0x0000014c //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[127:96]
#define GY_VALUE4         0x00000150 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[159:128]
#define GY_VALUE5         0x00000154 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[191:160]
#define GY_VALUE6         0x00000158 //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[223:192]
#define GY_VALUE7         0x0000015c //31:0   RW 椭圆曲线参数基点G的y坐标值寄存器的位域[255:224]
#define N_VALUE0          0x00000160 //31:0   RW 子群的阶n值寄存器的位域[31:0]
#define N_VALUE1          0x00000164 //31:0   RW 子群的阶n值寄存器的位域[63:32]
#define N_VALUE2          0x00000168 //31:0   RW 子群的阶n值寄存器的位域[95:64]
#define N_VALUE3          0x0000016c //31:0   RW 子群的阶n值寄存器的位域[127:96]
#define N_VALUE4          0x00000170 //31:0   RW 子群的阶n值寄存器的位域[159:128]
#define N_VALUE5          0x00000174 //31:0   RW 子群的阶n值寄存器的位域[191:160]
#define N_VALUE6          0x00000178 //31:0   RW 子群的阶n值寄存器的位域[223:192]
#define N_VALUE7          0x0000017c //31:0   RW 子群的阶n值寄存器的位域[255:224]
#define H_VALUE           0x00000180 //31:0   RW 子群的辅助因子h值寄存器
#define RSA_EN_X_VALUE0   0x00000184 //31:0   RW Rsa加密输入数据的位域[31:0]
#define RSA_EN_X_VALUE1   0x00000188 //31:0   RW Rsa加密输入数据的位域[63:32]
#define RSA_EN_X_VALUE2   0x0000018c //31:0   RW Rsa加密输入数据的位域[95:64]
#define RSA_EN_X_VALUE3   0x00000190 //31:0   RW Rsa加密输入数据的位域[127:96]
#define RSA_EN_X_VALUE4   0x00000194 //31:0   RW Rsa加密输入数据的位域[159:128]
#define RSA_EN_X_VALUE5   0x00000198 //31:0   RW Rsa加密输入数据的位域[191:160]
#define RSA_EN_X_VALUE6   0x0000019c //31:0   RW Rsa加密输入数据的位域[223:192]
#define RSA_EN_X_VALUE7   0x000001a0 //31:0   RW Rsa加密输入数据的位域[255:224]
#define RSA_EN_X_VALUE8   0x000001a4 //31:0   RW Rsa加密输入数据的位域[287:256]
#define RSA_EN_X_VALUE9   0x000001a8 //31:0   RW Rsa加密输入数据的位域[319:288]
#define RSA_EN_X_VALUE10  0x000001ac //31:0   RW Rsa加密输入数据的位域[351:320]
#define RSA_EN_X_VALUE11  0x000001b0 //31:0   RW Rsa加密输入数据的位域[383:352]
#define RSA_EN_X_VALUE12  0x000001b4 //31:0   RW Rsa加密输入数据的位域[415:384]
#define RSA_EN_X_VALUE13  0x000001b8 //31:0   RW Rsa加密输入数据的位域[447:416]
#define RSA_EN_X_VALUE14  0x000001bc //31:0   RW Rsa加密输入数据的位域[479:448]
#define RSA_EN_X_VALUE15  0x000001c0 //31:0   RW Rsa加密输入数据的位域[511:480]
#define RSA_EN_X_VALUE16  0x000001c4 //31:0   RW Rsa加密输入数据的位域[543:512]
#define RSA_EN_X_VALUE17  0x000001c8 //31:0   RW Rsa加密输入数据的位域[575:544]
#define RSA_EN_X_VALUE18  0x000001cc //31:0   RW Rsa加密输入数据的位域[607:576]
#define RSA_EN_X_VALUE19  0x000001d0 //31:0   RW Rsa加密输入数据的位域[639:608]
#define RSA_EN_X_VALUE20  0x000001d4 //31:0   RW Rsa加密输入数据的位域[671:640]
#define RSA_EN_X_VALUE21  0x000001d8 //31:0   RW Rsa加密输入数据的位域[703:672]
#define RSA_EN_X_VALUE22  0x000001dc //31:0   RW Rsa加密输入数据的位域[735:704]
#define RSA_EN_X_VALUE23  0x000001e0 //31:0   RW Rsa加密输入数据的位域[767:736]
#define RSA_EN_X_VALUE24  0x000001e4 //31:0   RW Rsa加密输入数据的位域[799:768]
#define RSA_EN_X_VALUE25  0x000001e8 //31:0   RW Rsa加密输入数据的位域[831:800]
#define RSA_EN_X_VALUE26  0x000001ec //31:0   RW Rsa加密输入数据的位域[863:832]
#define RSA_EN_X_VALUE27  0x000001f0 //31:0   RW Rsa加密输入数据的位域[895:864]
#define RSA_EN_X_VALUE28  0x000001f4 //31:0   RW Rsa加密输入数据的位域[927:896]
#define RSA_EN_X_VALUE29  0x000001f8 //31:0   RW Rsa加密输入数据的位域[959:928]
#define RSA_EN_X_VALUE30  0x000001fc //31:0   RW Rsa加密输入数据的位域[991:960]

#define RSA_EN_X_VALUE31  0x00000200   //31:0   RW Rsa加密输入数据的位域[1023:992]
#define RSA_EN_X_VALUE32  0x00000204   //31:0   RW Rsa加密输入数据的位域[1055:1024]
#define RSA_EN_X_VALUE33  0x00000208   //31:0   RW Rsa加密输入数据的位域[1087:1056]
#define RSA_EN_X_VALUE34  0x0000020c   //31:0   RW Rsa加密输入数据的位域[1119:1088]
#define RSA_EN_X_VALUE35  0x00000210   //31:0   RW Rsa加密输入数据的位域[1151:1120]
#define RSA_EN_X_VALUE36  0x00000214   //31:0   RW Rsa加密输入数据的位域[1183:1152]
#define RSA_EN_X_VALUE37  0x00000218   //31:0   RW Rsa加密输入数据的位域[1215:1184]
#define RSA_EN_X_VALUE38  0x0000021c   //31:0   RW Rsa加密输入数据的位域[1247:1216]
#define RSA_EN_X_VALUE39  0x00000220   //31:0   RW Rsa加密输入数据的位域[1279:1248]
#define RSA_EN_X_VALUE40  0x00000224   //31:0   RW Rsa加密输入数据的位域[1311:1280]
#define RSA_EN_X_VALUE41  0x00000228   //31:0   RW Rsa加密输入数据的位域[1343:1312]
#define RSA_EN_X_VALUE42  0x0000022c   //31:0   RW Rsa加密输入数据的位域[1375:1344]
#define RSA_EN_X_VALUE43  0x00000230   //31:0   RW Rsa加密输入数据的位域[1407:1376]
#define RSA_EN_X_VALUE44  0x00000234   //31:0   RW Rsa加密输入数据的位域[1439:1408]
#define RSA_EN_X_VALUE45  0x00000238   //31:0   RW Rsa加密输入数据的位域[1471:1440]
#define RSA_EN_X_VALUE46  0x0000023c   //31:0   RW Rsa加密输入数据的位域[1503:1472]
#define RSA_EN_X_VALUE47  0x00000240   //31:0   RW Rsa加密输入数据的位域[1535:1504]
#define RSA_EN_X_VALUE48  0x00000244   //31:0   RW Rsa加密输入数据的位域[1567:1536]
#define RSA_EN_X_VALUE49  0x00000248   //31:0   RW Rsa加密输入数据的位域[1599:1568]
#define RSA_EN_X_VALUE50  0x0000024c   //31:0   RW Rsa加密输入数据的位域[1631:1600]
#define RSA_EN_X_VALUE51  0x00000250   //31:0   RW Rsa加密输入数据的位域[1663:1632]
#define RSA_EN_X_VALUE52  0x00000254   //31:0   RW Rsa加密输入数据的位域[1695:1664]
#define RSA_EN_X_VALUE53  0x00000258   //31:0   RW Rsa加密输入数据的位域[1727:1696]
#define RSA_EN_X_VALUE54  0x0000025c   //31:0   RW Rsa加密输入数据的位域[1759:1728]
#define RSA_EN_X_VALUE55  0x00000260   //31:0   RW Rsa加密输入数据的位域[1791:1760]
#define RSA_EN_X_VALUE56  0x00000264   //31:0   RW Rsa加密输入数据的位域[1823:1792]
#define RSA_EN_X_VALUE57  0x00000268   //31:0   RW Rsa加密输入数据的位域[1855:1824]
#define RSA_EN_X_VALUE58  0x0000026c   //31:0   RW Rsa加密输入数据的位域[1887:1856]
#define RSA_EN_X_VALUE59  0x00000270   //31:0   RW Rsa加密输入数据的位域[1919:1888]
#define RSA_EN_X_VALUE60  0x00000274   //31:0   RW Rsa加密输入数据的位域[1951:1920]
#define RSA_EN_X_VALUE61  0x00000278   //31:0   RW Rsa加密输入数据的位域[1983:1952]
#define RSA_EN_X_VALUE62  0x0000027c   //31:0   RW Rsa加密输入数据的位域[2015:1984]
#define RSA_EN_X_VALUE63  0x00000280   //31:0   RW Rsa加密输入数据的位域[2047:2016]
#define RSA_EN_N_VALUE0   0x00000284   //31:0   RW Rsa加密输入私钥的位域[31:0]
#define RSA_EN_N_VALUE1   0x00000288   //31:0   RW Rsa加密输入私钥的位域[63:32]
#define RSA_EN_N_VALUE2   0x0000028c   //31:0   RW Rsa加密输入私钥的位域[95:64]
#define RSA_EN_N_VALUE3   0x00000290   //31:0   RW Rsa加密输入私钥的位域[127:96]
#define RSA_EN_N_VALUE4   0x00000294   //31:0   RW Rsa加密输入私钥的位域[159:128]
#define RSA_EN_N_VALUE5   0x00000298   //31:0   RW Rsa加密输入私钥的位域[191:160]
#define RSA_EN_N_VALUE6   0x0000029c   //31:0   RW Rsa加密输入私钥的位域[223:192]
#define RSA_EN_N_VALUE7   0x000002a0   //31:0   RW Rsa加密输入私钥的位域[255:224]
#define RSA_EN_N_VALUE8   0x000002a4   //31:0   RW Rsa加密输入私钥的位域[287:256]
#define RSA_EN_N_VALUE9   0x000002a8   //31:0   RW Rsa加密输入私钥的位域[319:288]
#define RSA_EN_N_VALUE10  0x000002ac   //31:0   RW Rsa加密输入私钥的位域[351:320]
#define RSA_EN_N_VALUE11  0x000002b0   //31:0   RW Rsa加密输入私钥的位域[383:352]
#define RSA_EN_N_VALUE12  0x000002b4   //31:0   RW Rsa加密输入私钥的位域[415:384]
#define RSA_EN_N_VALUE13  0x000002b8   //31:0   RW Rsa加密输入私钥的位域[447:416]
#define RSA_EN_N_VALUE14  0x000002bc   //31:0   RW Rsa加密输入私钥的位域[479:448]
#define RSA_EN_N_VALUE15  0x000002c0   //31:0   RW Rsa加密输入私钥的位域[511:480]
#define RSA_EN_N_VALUE16  0x000002c4   //31:0   RW Rsa加密输入私钥的位域[543:512]
#define RSA_EN_N_VALUE17  0x000002c8   //31:0   RW Rsa加密输入私钥的位域[575:544]
#define RSA_EN_N_VALUE18  0x000002cc   //31:0   RW Rsa加密输入私钥的位域[607:576]
#define RSA_EN_N_VALUE19  0x000002d0   //31:0   RW Rsa加密输入私钥的位域[639:608]
#define RSA_EN_N_VALUE20  0x000002d4   //31:0   RW Rsa加密输入私钥的位域[671:640]
#define RSA_EN_N_VALUE21  0x000002d8   //31:0   RW Rsa加密输入私钥的位域[703:672]
#define RSA_EN_N_VALUE22  0x000002dc   //31:0   RW Rsa加密输入私钥的位域[735:704]
#define RSA_EN_N_VALUE23  0x000002e0   //31:0   RW Rsa加密输入私钥的位域[767:736]
#define RSA_EN_N_VALUE24  0x000002e4   //31:0   RW Rsa加密输入私钥的位域[799:768]
#define RSA_EN_N_VALUE25  0x000002e8   //31:0   RW Rsa加密输入私钥的位域[831:800]
#define RSA_EN_N_VALUE26  0x000002ec   //31:0   RW Rsa加密输入私钥的位域[863:832]
#define RSA_EN_N_VALUE27  0x000002f0   //31:0   RW Rsa加密输入私钥的位域[895:864]
#define RSA_EN_N_VALUE28  0x000002f4   //31:0   RW Rsa加密输入私钥的位域[927:896]
#define RSA_EN_N_VALUE29  0x000002f8   //31:0   RW Rsa加密输入私钥的位域[959:928]
#define RSA_EN_N_VALUE30  0x000002fc   //31:0   RW Rsa加密输入私钥的位域[991:960]

#define RSA_EN_N_VALUE31  0x00000300   //31:0   RW Rsa加密输入私钥的位域[1023:992]
#define RSA_EN_N_VALUE32  0x00000304   //31:0   RW Rsa加密输入私钥的位域[1055:1024]
#define RSA_EN_N_VALUE33  0x00000308   //31:0   RW Rsa加密输入私钥的位域[1087:1056]
#define RSA_EN_N_VALUE34  0x0000030c   //31:0   RW Rsa加密输入私钥的位域[1119:1088]
#define RSA_EN_N_VALUE35  0x00000310   //31:0   RW Rsa加密输入私钥的位域[1151:1120]
#define RSA_EN_N_VALUE36  0x00000314   //31:0   RW Rsa加密输入私钥的位域[1183:1152]
#define RSA_EN_N_VALUE37  0x00000318   //31:0   RW Rsa加密输入私钥的位域[1215:1184]
#define RSA_EN_N_VALUE38  0x0000031c   //31:0   RW Rsa加密输入私钥的位域[1247:1216]
#define RSA_EN_N_VALUE39  0x00000320   //31:0   RW Rsa加密输入私钥的位域[1279:1248]
#define RSA_EN_N_VALUE40  0x00000324   //31:0   RW Rsa加密输入私钥的位域[1311:1280]
#define RSA_EN_N_VALUE41  0x00000328   //31:0   RW Rsa加密输入私钥的位域[1343:1312]
#define RSA_EN_N_VALUE42  0x0000032c   //31:0   RW Rsa加密输入私钥的位域[1375:1344]
#define RSA_EN_N_VALUE43  0x00000330   //31:0   RW Rsa加密输入私钥的位域[1407:1376]
#define RSA_EN_N_VALUE44  0x00000334   //31:0   RW Rsa加密输入私钥的位域[1439:1408]
#define RSA_EN_N_VALUE45  0x00000338   //31:0   RW Rsa加密输入私钥的位域[1471:1440]
#define RSA_EN_N_VALUE46  0x0000033c   //31:0   RW Rsa加密输入私钥的位域[1503:1472]
#define RSA_EN_N_VALUE47  0x00000340   //31:0   RW Rsa加密输入私钥的位域[1535:1504]
#define RSA_EN_N_VALUE48  0x00000344   //31:0   RW Rsa加密输入私钥的位域[1567:1536]
#define RSA_EN_N_VALUE49  0x00000348   //31:0   RW Rsa加密输入私钥的位域[1599:1568]
#define RSA_EN_N_VALUE50  0x0000034c   //31:0   RW Rsa加密输入私钥的位域[1631:1600]
#define RSA_EN_N_VALUE51  0x00000350   //31:0   RW Rsa加密输入私钥的位域[1663:1632]
#define RSA_EN_N_VALUE52  0x00000354   //31:0   RW Rsa加密输入私钥的位域[1695:1664]
#define RSA_EN_N_VALUE53  0x00000358   //31:0   RW Rsa加密输入私钥的位域[1727:1696]
#define RSA_EN_N_VALUE54  0x0000035c   //31:0   RW Rsa加密输入私钥的位域[1759:1728]
#define RSA_EN_N_VALUE55  0x00000360   //31:0   RW Rsa加密输入私钥的位域[1791:1760]
#define RSA_EN_N_VALUE56  0x00000364   //31:0   RW Rsa加密输入私钥的位域[1823:1792]
#define RSA_EN_N_VALUE57  0x00000368   //31:0   RW Rsa加密输入私钥的位域[1855:1824]
#define RSA_EN_N_VALUE58  0x0000036c   //31:0   RW Rsa加密输入私钥的位域[1887:1856]
#define RSA_EN_N_VALUE59  0x00000370   //31:0   RW Rsa加密输入私钥的位域[1919:1888]
#define RSA_EN_N_VALUE60  0x00000374   //31:0   RW Rsa加密输入私钥的位域[1951:1920]
#define RSA_EN_N_VALUE61  0x00000378   //31:0   RW Rsa加密输入私钥的位域[1983:1952]
#define RSA_EN_N_VALUE62  0x0000037c   //31:0   RW Rsa加密输入私钥的位域[2015:1984]
#define RSA_EN_N_VALUE63  0x00000380   //31:0   RW Rsa加密输入私钥的位域[2047:2016]
#define RSA_DE_X_VALUE0   0x00000384   //31:0   RW Rsa加密输出数据的位域[31:0]
#define RSA_DE_X_VALUE1   0x00000388   //31:0   RW Rsa加密输出数据的位域[63:32]
#define RSA_DE_X_VALUE2   0x0000038c   //31:0   RW Rsa加密输出数据的位域[95:64]
#define RSA_DE_X_VALUE3   0x00000390   //31:0   RW Rsa加密输出数据的位域[127:96]
#define RSA_DE_X_VALUE4   0x00000394   //31:0   RW Rsa加密输出数据的位域[159:128]
#define RSA_DE_X_VALUE5   0x00000398   //31:0   RW Rsa加密输出数据的位域[191:160]
#define RSA_DE_X_VALUE6   0x0000039c   //31:0   RW Rsa加密输出数据的位域[223:192]
#define RSA_DE_X_VALUE7   0x000003a0   //31:0   RW Rsa加密输出数据的位域[255:224]
#define RSA_DE_X_VALUE8   0x000003a4   //31:0   RW Rsa加密输出数据的位域[287:256]
#define RSA_DE_X_VALUE9   0x000003a8   //31:0   RW Rsa加密输出数据的位域[319:288]
#define RSA_DE_X_VALUE10  0x000003ac   //31:0   RW Rsa加密输出数据的位域[351:320]
#define RSA_DE_X_VALUE11  0x000003b0   //31:0   RW Rsa加密输出数据的位域[383:352]
#define RSA_DE_X_VALUE12  0x000003b4   //31:0   RW Rsa加密输出数据的位域[415:384]
#define RSA_DE_X_VALUE13  0x000003b8   //31:0   RW Rsa加密输出数据的位域[447:416]
#define RSA_DE_X_VALUE14  0x000003bc   //31:0   RW Rsa加密输出数据的位域[479:448]
#define RSA_DE_X_VALUE15  0x000003c0   //31:0   RW Rsa加密输出数据的位域[511:480]
#define RSA_DE_X_VALUE16  0x000003c4   //31:0   RW Rsa加密输出数据的位域[543:512]
#define RSA_DE_X_VALUE17  0x000003c8   //31:0   RW Rsa加密输出数据的位域[575:544]
#define RSA_DE_X_VALUE18  0x000003cc   //31:0   RW Rsa加密输出数据的位域[607:576]
#define RSA_DE_X_VALUE19  0x000003d0   //31:0   RW Rsa加密输出数据的位域[639:608]
#define RSA_DE_X_VALUE20  0x000003d4   //31:0   RW Rsa加密输出数据的位域[671:640]
#define RSA_DE_X_VALUE21  0x000003d8   //31:0   RW Rsa加密输出数据的位域[703:672]
#define RSA_DE_X_VALUE22  0x000003dc   //31:0   RW Rsa加密输出数据的位域[735:704]
#define RSA_DE_X_VALUE23  0x000003e0   //31:0   RW Rsa加密输出数据的位域[767:736]
#define RSA_DE_X_VALUE24  0x000003e4   //31:0   RW Rsa加密输出数据的位域[799:768]
#define RSA_DE_X_VALUE25  0x000003e8   //31:0   RW Rsa加密输出数据的位域[831:800]
#define RSA_DE_X_VALUE26  0x000003ec   //31:0   RW Rsa加密输出数据的位域[863:832]
#define RSA_DE_X_VALUE27  0x000003f0   //31:0   RW Rsa加密输出数据的位域[895:864]
#define RSA_DE_X_VALUE28  0x000003f4   //31:0   RW Rsa加密输出数据的位域[927:896]
#define RSA_DE_X_VALUE29  0x000003f8   //31:0   RW Rsa加密输出数据的位域[959:928]
#define RSA_DE_X_VALUE30  0x000003fc   //31:0   RW Rsa加密输出数据的位域[991:960]

#define RSA_DE_X_VALUE31  0x00000400 //31:0   RW Rsa加密输出数据的位域[1023:992]
#define RSA_DE_X_VALUE32  0x00000404 //31:0   RW Rsa加密输出数据的位域[1055:1024]
#define RSA_DE_X_VALUE33  0x00000408 //31:0   RW Rsa加密输出数据的位域[1087:1056]
#define RSA_DE_X_VALUE34  0x0000040c //31:0   RW Rsa加密输出数据的位域[1119:1088]
#define RSA_DE_X_VALUE35  0x00000410 //31:0   RW Rsa加密输出数据的位域[1151:1120]
#define RSA_DE_X_VALUE36  0x00000414 //31:0   RW Rsa加密输出数据的位域[1183:1152]
#define RSA_DE_X_VALUE37  0x00000418 //31:0   RW Rsa加密输出数据的位域[1215:1184]
#define RSA_DE_X_VALUE38  0x0000041c //31:0   RW Rsa加密输出数据的位域[1247:1216]
#define RSA_DE_X_VALUE39  0x00000420 //31:0   RW Rsa加密输出数据的位域[1279:1248]
#define RSA_DE_X_VALUE40  0x00000424 //31:0   RW Rsa加密输出数据的位域[1311:1280]
#define RSA_DE_X_VALUE41  0x00000428 //31:0   RW Rsa加密输出数据的位域[1343:1312]
#define RSA_DE_X_VALUE42  0x0000042c //31:0   RW Rsa加密输出数据的位域[1375:1344]
#define RSA_DE_X_VALUE43  0x00000430 //31:0   RW Rsa加密输出数据的位域[1407:1376]
#define RSA_DE_X_VALUE44  0x00000434 //31:0   RW Rsa加密输出数据的位域[1439:1408]
#define RSA_DE_X_VALUE45  0x00000438 //31:0   RW Rsa加密输出数据的位域[1471:1440]
#define RSA_DE_X_VALUE46  0x0000043c //31:0   RW Rsa加密输出数据的位域[1503:1472]
#define RSA_DE_X_VALUE47  0x00000440 //31:0   RW Rsa加密输出数据的位域[1535:1504]
#define RSA_DE_X_VALUE48  0x00000444 //31:0   RW Rsa加密输出数据的位域[1567:1536]
#define RSA_DE_X_VALUE49  0x00000448 //31:0   RW Rsa加密输出数据的位域[1599:1568]
#define RSA_DE_X_VALUE50  0x0000044c //31:0   RW Rsa加密输出数据的位域[1631:1600]
#define RSA_DE_X_VALUE51  0x00000450 //31:0   RW Rsa加密输出数据的位域[1663:1632]
#define RSA_DE_X_VALUE52  0x00000454 //31:0   RW Rsa加密输出数据的位域[1695:1664]
#define RSA_DE_X_VALUE53  0x00000458 //31:0   RW Rsa加密输出数据的位域[1727:1696]
#define RSA_DE_X_VALUE54  0x0000045c //31:0   RW Rsa加密输出数据的位域[1759:1728]
#define RSA_DE_X_VALUE55  0x00000460 //31:0   RW Rsa加密输出数据的位域[1791:1760]
#define RSA_DE_X_VALUE56  0x00000464 //31:0   RW Rsa加密输出数据的位域[1823:1792]
#define RSA_DE_X_VALUE57  0x00000468 //31:0   RW Rsa加密输出数据的位域[1855:1824]
#define RSA_DE_X_VALUE58  0x0000046c //31:0   RW Rsa加密输出数据的位域[1887:1856]
#define RSA_DE_X_VALUE59  0x00000470 //31:0   RW Rsa加密输出数据的位域[1919:1888]
#define RSA_DE_X_VALUE60  0x00000474 //31:0   RW Rsa加密输出数据的位域[1951:1920]
#define RSA_DE_X_VALUE61  0x00000478 //31:0   RW Rsa加密输出数据的位域[1983:1952]
#define RSA_DE_X_VALUE62  0x0000047c //31:0   RW Rsa加密输出数据的位域[2015:1984]
#define RSA_DE_X_VALUE63  0x00000480 //31:0   RW Rsa加密输出数据的位域[2047:2016]
#define RSA_DE_N_VALUE0   0x00000484 //31:0   RW Rsa加密输入参数的位域[31:0]
#define RSA_DE_N_VALUE1   0x00000488 //31:0   RW Rsa加密输入参数的位域[63:32]
#define RSA_DE_N_VALUE2   0x0000048c //31:0   RW Rsa加密输入参数的位域[95:64]
#define RSA_DE_N_VALUE3   0x00000490 //31:0   RW Rsa加密输入参数的位域[127:96]
#define RSA_DE_N_VALUE4   0x00000494 //31:0   RW Rsa加密输入参数的位域[159:128]
#define RSA_DE_N_VALUE5   0x00000498 //31:0   RW Rsa加密输入参数的位域[191:160]
#define RSA_DE_N_VALUE6   0x0000049c //31:0   RW Rsa加密输入参数的位域[223:192]
#define RSA_DE_N_VALUE7   0x000004a0 //31:0   RW Rsa加密输入参数的位域[255:224]
#define RSA_DE_N_VALUE8   0x000004a4 //31:0   RW Rsa加密输入参数的位域[287:256]
#define RSA_DE_N_VALUE9   0x000004a8 //31:0   RW Rsa加密输入参数的位域[319:288]
#define RSA_DE_N_VALUE10  0x000004ac //31:0   RW Rsa加密输入参数的位域[351:320]
#define RSA_DE_N_VALUE11  0x000004b0 //31:0   RW Rsa加密输入参数的位域[383:352]
#define RSA_DE_N_VALUE12  0x000004b4 //31:0   RW Rsa加密输入参数的位域[415:384]
#define RSA_DE_N_VALUE13  0x000004b8 //31:0   RW Rsa加密输入参数的位域[447:416]
#define RSA_DE_N_VALUE14  0x000004bc //31:0   RW Rsa加密输入参数的位域[479:448]
#define RSA_DE_N_VALUE15  0x000004c0 //31:0   RW Rsa加密输入参数的位域[511:480]
#define RSA_DE_N_VALUE16  0x000004c4 //31:0   RW Rsa加密输入参数的位域[543:512]
#define RSA_DE_N_VALUE17  0x000004c8 //31:0   RW Rsa加密输入参数的位域[575:544]
#define RSA_DE_N_VALUE18  0x000004cc //31:0   RW Rsa加密输入参数的位域[607:576]
#define RSA_DE_N_VALUE19  0x000004d0 //31:0   RW Rsa加密输入参数的位域[639:608]
#define RSA_DE_N_VALUE20  0x000004d4 //31:0   RW Rsa加密输入参数的位域[671:640]
#define RSA_DE_N_VALUE21  0x000004d8 //31:0   RW Rsa加密输入参数的位域[703:672]
#define RSA_DE_N_VALUE22  0x000004dc //31:0   RW Rsa加密输入参数的位域[735:704]
#define RSA_DE_N_VALUE23  0x000004e0 //31:0   RW Rsa加密输入参数的位域[767:736]
#define RSA_DE_N_VALUE24  0x000004e4 //31:0   RW Rsa加密输入参数的位域[799:768]
#define RSA_DE_N_VALUE25  0x000004e8 //31:0   RW Rsa加密输入参数的位域[831:800]
#define RSA_DE_N_VALUE26  0x000004ec //31:0   RW Rsa加密输入参数的位域[863:832]
#define RSA_DE_N_VALUE27  0x000004f0 //31:0   RW Rsa加密输入参数的位域[895:864]
#define RSA_DE_N_VALUE28  0x000004f4 //31:0   RW Rsa加密输入参数的位域[927:896]
#define RSA_DE_N_VALUE29  0x000004f8 //31:0   RW Rsa加密输入参数的位域[959:928]
#define RSA_DE_N_VALUE30  0x000004fc //31:0   RW Rsa加密输入参数的位域[991:960]

#define RSA_DE_N_VALUE31  0x00000500 //31:0   RW Rsa加密输入参数的位域[1023:992]
#define RSA_DE_N_VALUE32  0x00000504 //31:0   RW Rsa加密输入参数的位域[1055:1024]
#define RSA_DE_N_VALUE33  0x00000508 //31:0   RW Rsa加密输入参数的位域[1087:1056]
#define RSA_DE_N_VALUE34  0x0000050c //31:0   RW Rsa加密输入参数的位域[1119:1088]
#define RSA_DE_N_VALUE35  0x00000510 //31:0   RW Rsa加密输入参数的位域[1151:1120]
#define RSA_DE_N_VALUE36  0x00000514 //31:0   RW Rsa加密输入参数的位域[1183:1152]
#define RSA_DE_N_VALUE37  0x00000518 //31:0   RW Rsa加密输入参数的位域[1215:1184]
#define RSA_DE_N_VALUE38  0x0000051c //31:0   RW Rsa加密输入参数的位域[1247:1216]
#define RSA_DE_N_VALUE39  0x00000520 //31:0   RW Rsa加密输入参数的位域[1279:1248]
#define RSA_DE_N_VALUE40  0x00000524 //31:0   RW Rsa加密输入参数的位域[1311:1280]
#define RSA_DE_N_VALUE41  0x00000528 //31:0   RW Rsa加密输入参数的位域[1343:1312]
#define RSA_DE_N_VALUE42  0x0000052c //31:0   RW Rsa加密输入参数的位域[1375:1344]
#define RSA_DE_N_VALUE43  0x00000530 //31:0   RW Rsa加密输入参数的位域[1407:1376]
#define RSA_DE_N_VALUE44  0x00000534 //31:0   RW Rsa加密输入参数的位域[1439:1408]
#define RSA_DE_N_VALUE45  0x00000538 //31:0   RW Rsa加密输入参数的位域[1471:1440]
#define RSA_DE_N_VALUE46  0x0000053c //31:0   RW Rsa加密输入参数的位域[1503:1472]
#define RSA_DE_N_VALUE47  0x00000540 //31:0   RW Rsa加密输入参数的位域[1535:1504]
#define RSA_DE_N_VALUE48  0x00000544 //31:0   RW Rsa加密输入参数的位域[1567:1536]
#define RSA_DE_N_VALUE49  0x00000548 //31:0   RW Rsa加密输入参数的位域[1599:1568]
#define RSA_DE_N_VALUE50  0x0000054c //31:0   RW Rsa加密输入参数的位域[1631:1600]
#define RSA_DE_N_VALUE51  0x00000550 //31:0   RW Rsa加密输入参数的位域[1663:1632]
#define RSA_DE_N_VALUE52  0x00000554 //31:0   RW Rsa加密输入参数的位域[1695:1664]
#define RSA_DE_N_VALUE53  0x00000558 //31:0   RW Rsa加密输入参数的位域[1727:1696]
#define RSA_DE_N_VALUE54  0x0000055c //31:0   RW Rsa加密输入参数的位域[1759:1728]
#define RSA_DE_N_VALUE55  0x00000560 //31:0   RW Rsa加密输入参数的位域[1791:1760]
#define RSA_DE_N_VALUE56  0x00000564 //31:0   RW Rsa加密输入参数的位域[1823:1792]
#define RSA_DE_N_VALUE57  0x00000568 //31:0   RW Rsa加密输入参数的位域[1855:1824]
#define RSA_DE_N_VALUE58  0x0000056c //31:0   RW Rsa加密输入参数的位域[1887:1856]
#define RSA_DE_N_VALUE59  0x00000570 //31:0   RW Rsa加密输入参数的位域[1919:1888]
#define RSA_DE_N_VALUE60  0x00000574 //31:0   RW Rsa加密输入参数的位域[1951:1920]
#define RSA_DE_N_VALUE61  0x00000578 //31:0   RW Rsa加密输入参数的位域[1983:1952]
#define RSA_DE_N_VALUE62  0x0000057c //31:0   RW Rsa加密输入参数的位域[2015:1984]
#define RSA_DE_N_VALUE63  0x00000580 //31:0   RW Rsa加密输入参数的位域[2047:2016]
#define RSA_DE_D_VALUE0   0x00000584 //31:0   RW Rsa解密输入数据的位域[31:0]
#define RSA_DE_D_VALUE1   0x00000588 //31:0   RW Rsa解密输入数据的位域[63:32]
#define RSA_DE_D_VALUE2   0x0000058c //31:0   RW Rsa解密输入数据的位域[95:64]
#define RSA_DE_D_VALUE3   0x00000590 //31:0   RW Rsa解密输入数据的位域[127:96]
#define RSA_DE_D_VALUE4   0x00000594 //31:0   RW Rsa解密输入数据的位域[159:128]
#define RSA_DE_D_VALUE5   0x00000598 //31:0   RW Rsa解密输入数据的位域[191:160]
#define RSA_DE_D_VALUE6   0x0000059c //31:0   RW Rsa解密输入数据的位域[223:192]
#define RSA_DE_D_VALUE7   0x000005a0 //31:0   RW Rsa解密输入数据的位域[255:224]
#define RSA_DE_D_VALUE8   0x000005a4 //31:0   RW Rsa解密输入数据的位域[287:256]
#define RSA_DE_D_VALUE9   0x000005a8 //31:0   RW Rsa解密输入数据的位域[319:288]
#define RSA_DE_D_VALUE10  0x000005ac //31:0   RW Rsa解密输入数据的位域[351:320]
#define RSA_DE_D_VALUE11  0x000005b0 //31:0   RW Rsa解密输入数据的位域[383:352]
#define RSA_DE_D_VALUE12  0x000005b4 //31:0   RW Rsa解密输入数据的位域[415:384]
#define RSA_DE_D_VALUE13  0x000005b8 //31:0   RW Rsa解密输入数据的位域[447:416]
#define RSA_DE_D_VALUE14  0x000005bc //31:0   RW Rsa解密输入数据的位域[479:448]
#define RSA_DE_D_VALUE15  0x000005c0 //31:0   RW Rsa解密输入数据的位域[511:480]
#define RSA_DE_D_VALUE16  0x000005c4 //31:0   RW Rsa解密输入数据的位域[543:512]
#define RSA_DE_D_VALUE17  0x000005c8 //31:0   RW Rsa解密输入数据的位域[575:544]
#define RSA_DE_D_VALUE18  0x000005cc //31:0   RW Rsa解密输入数据的位域[607:576]
#define RSA_DE_D_VALUE19  0x000005d0 //31:0   RW Rsa解密输入数据的位域[639:608]
#define RSA_DE_D_VALUE20  0x000005d4 //31:0   RW Rsa解密输入数据的位域[671:640]
#define RSA_DE_D_VALUE21  0x000005d8 //31:0   RW Rsa解密输入数据的位域[703:672]
#define RSA_DE_D_VALUE22  0x000005dc //31:0   RW Rsa解密输入数据的位域[735:704]
#define RSA_DE_D_VALUE23  0x000005e0 //31:0   RW Rsa解密输入数据的位域[767:736]
#define RSA_DE_D_VALUE24  0x000005e4 //31:0   RW Rsa解密输入数据的位域[799:768]
#define RSA_DE_D_VALUE25  0x000005e8 //31:0   RW Rsa解密输入数据的位域[831:800]
#define RSA_DE_D_VALUE26  0x000005ec //31:0   RW Rsa解密输入数据的位域[863:832]
#define RSA_DE_D_VALUE27  0x000005f0 //31:0   RW Rsa解密输入数据的位域[895:864]
#define RSA_DE_D_VALUE28  0x000005f4 //31:0   RW Rsa解密输入数据的位域[927:896]
#define RSA_DE_D_VALUE29  0x000005f8 //31:0   RW Rsa解密输入数据的位域[959:928]
#define RSA_DE_D_VALUE30  0x000005fc //31:0   RW Rsa解密输入数据的位域[991:960]

#define RSA_DE_D_VALUE31  0x00000600 //31:0   RW Rsa解密输入数据的位域[1023:992]
#define RSA_DE_D_VALUE32  0x00000604 //31:0   RW Rsa解密输入数据的位域[1055:1024]
#define RSA_DE_D_VALUE33  0x00000608 //31:0   RW Rsa解密输入数据的位域[1087:1056]
#define RSA_DE_D_VALUE34  0x0000060c //31:0   RW Rsa解密输入数据的位域[1119:1088]
#define RSA_DE_D_VALUE35  0x00000610 //31:0   RW Rsa解密输入数据的位域[1151:1120]
#define RSA_DE_D_VALUE36  0x00000614 //31:0   RW Rsa解密输入数据的位域[1183:1152]
#define RSA_DE_D_VALUE37  0x00000618 //31:0   RW Rsa解密输入数据的位域[1215:1184]
#define RSA_DE_D_VALUE38  0x0000061c //31:0   RW Rsa解密输入数据的位域[1247:1216]
#define RSA_DE_D_VALUE39  0x00000620 //31:0   RW Rsa解密输入数据的位域[1279:1248]
#define RSA_DE_D_VALUE40  0x00000624 //31:0   RW Rsa解密输入数据的位域[1311:1280]
#define RSA_DE_D_VALUE41  0x00000628 //31:0   RW Rsa解密输入数据的位域[1343:1312]
#define RSA_DE_D_VALUE42  0x0000062c //31:0   RW Rsa解密输入数据的位域[1375:1344]
#define RSA_DE_D_VALUE43  0x00000630 //31:0   RW Rsa解密输入数据的位域[1407:1376]
#define RSA_DE_D_VALUE44  0x00000634 //31:0   RW Rsa解密输入数据的位域[1439:1408]
#define RSA_DE_D_VALUE45  0x00000638 //31:0   RW Rsa解密输入数据的位域[1471:1440]
#define RSA_DE_D_VALUE46  0x0000063c //31:0   RW Rsa解密输入数据的位域[1503:1472]
#define RSA_DE_D_VALUE47  0x00000640 //31:0   RW Rsa解密输入数据的位域[1535:1504]
#define RSA_DE_D_VALUE48  0x00000644 //31:0   RW Rsa解密输入数据的位域[1567:1536]
#define RSA_DE_D_VALUE49  0x00000648 //31:0   RW Rsa解密输入数据的位域[1599:1568]
#define RSA_DE_D_VALUE50  0x0000064c //31:0   RW Rsa解密输入数据的位域[1631:1600]
#define RSA_DE_D_VALUE51  0x00000650 //31:0   RW Rsa解密输入数据的位域[1663:1632]
#define RSA_DE_D_VALUE52  0x00000654 //31:0   RW Rsa解密输入数据的位域[1695:1664]
#define RSA_DE_D_VALUE53  0x00000658 //31:0   RW Rsa解密输入数据的位域[1727:1696]
#define RSA_DE_D_VALUE54  0x0000065c //31:0   RW Rsa解密输入数据的位域[1759:1728]
#define RSA_DE_D_VALUE55  0x00000660 //31:0   RW Rsa解密输入数据的位域[1791:1760]
#define RSA_DE_D_VALUE56  0x00000664 //31:0   RW Rsa解密输入数据的位域[1823:1792]
#define RSA_DE_D_VALUE57  0x00000668 //31:0   RW Rsa解密输入数据的位域[1855:1824]
#define RSA_DE_D_VALUE58  0x0000066c //31:0   RW Rsa解密输入数据的位域[1887:1856]
#define RSA_DE_D_VALUE59  0x00000670 //31:0   RW Rsa解密输入数据的位域[1919:1888]
#define RSA_DE_D_VALUE60  0x00000674 //31:0   RW Rsa解密输入数据的位域[1951:1920]
#define RSA_DE_D_VALUE61  0x00000678 //31:0   RW Rsa解密输入数据的位域[1983:1952]
#define RSA_DE_D_VALUE62  0x0000067c //31:0   RW Rsa解密输入数据的位域[2015:1984]
#define RSA_DE_D_VALUE63  0x00000680 //31:0   RW Rsa解密输入数据的位域[2047:2016]
#define RSA_EN_E_VALUE0   0x00000684 //31:0   RW Rsa解密输入公钥的位域[31:0]
#define RSA_EN_E_VALUE1   0x00000688 //31:0   RW Rsa解密输入公钥的位域[63:32]
#define RSA_EN_E_VALUE2   0x0000068c //31:0   RW Rsa解密输入公钥的位域[95:64]
#define RSA_EN_E_VALUE3   0x00000690 //31:0   RW Rsa解密输入公钥的位域[127:96]
#define RSA_EN_E_VALUE4   0x00000694 //31:0   RW Rsa解密输入公钥的位域[159:128]
#define RSA_EN_E_VALUE5   0x00000698 //31:0   RW Rsa解密输入公钥的位域[191:160]
#define RSA_EN_E_VALUE6   0x0000069c //31:0   RW Rsa解密输入公钥的位域[223:192]
#define RSA_EN_E_VALUE7   0x000006a0 //31:0   RW Rsa解密输入公钥的位域[255:224]
#define RSA_EN_E_VALUE8   0x000006a4 //31:0   RW Rsa解密输入公钥的位域[287:256]
#define RSA_EN_E_VALUE9   0x000006a8 //31:0   RW Rsa解密输入公钥的位域[319:288]
#define RSA_EN_E_VALUE10  0x000006ac //31:0   RW Rsa解密输入公钥的位域[351:320]
#define RSA_EN_E_VALUE11  0x000006b0 //31:0   RW Rsa解密输入公钥的位域[383:352]
#define RSA_EN_E_VALUE12  0x000006b4 //31:0   RW Rsa解密输入公钥的位域[415:384]
#define RSA_EN_E_VALUE13  0x000006b8 //31:0   RW Rsa解密输入公钥的位域[447:416]
#define RSA_EN_E_VALUE14  0x000006bc //31:0   RW Rsa解密输入公钥的位域[479:448]
#define RSA_EN_E_VALUE15  0x000006c0 //31:0   RW Rsa解密输入公钥的位域[511:480]
#define RSA_EN_E_VALUE16  0x000006c4 //31:0   RW Rsa解密输入公钥的位域[543:512]
#define RSA_EN_E_VALUE17  0x000006c8 //31:0   RW Rsa解密输入公钥的位域[575:544]
#define RSA_EN_E_VALUE18  0x000006cc //31:0   RW Rsa解密输入公钥的位域[607:576]
#define RSA_EN_E_VALUE19  0x000006d0 //31:0   RW Rsa解密输入公钥的位域[639:608]
#define RSA_EN_E_VALUE20  0x000006d4 //31:0   RW Rsa解密输入公钥的位域[671:640]
#define RSA_EN_E_VALUE21  0x000006d8 //31:0   RW Rsa解密输入公钥的位域[703:672]
#define RSA_EN_E_VALUE22  0x000006dc //31:0   RW Rsa解密输入公钥的位域[735:704]
#define RSA_EN_E_VALUE23  0x000006e0 //31:0   RW Rsa解密输入公钥的位域[767:736]
#define RSA_EN_E_VALUE24  0x000006e4 //31:0   RW Rsa解密输入公钥的位域[799:768]
#define RSA_EN_E_VALUE25  0x000006e8 //31:0   RW Rsa解密输入公钥的位域[831:800]
#define RSA_EN_E_VALUE26  0x000006ec //31:0   RW Rsa解密输入公钥的位域[863:832]
#define RSA_EN_E_VALUE27  0x000006f0 //31:0   RW Rsa解密输入公钥的位域[895:864]
#define RSA_EN_E_VALUE28  0x000006f4 //31:0   RW Rsa解密输入公钥的位域[927:896]
#define RSA_EN_E_VALUE29  0x000006f8 //31:0   RW Rsa解密输入公钥的位域[959:928]
#define RSA_EN_E_VALUE30  0x000006fc //31:0   RW Rsa解密输入公钥的位域[991:960]

#define RSA_EN_E_VALUE31  0x00000700 //31:0   RW Rsa解密输入公钥的位域[1023:992]
#define RSA_EN_E_VALUE32  0x00000704 //31:0   RW Rsa解密输入公钥的位域[1055:1024]
#define RSA_EN_E_VALUE33  0x00000708 //31:0   RW Rsa解密输入公钥的位域[1087:1056]
#define RSA_EN_E_VALUE34  0x0000070c //31:0   RW Rsa解密输入公钥的位域[1119:1088]
#define RSA_EN_E_VALUE35  0x00000710 //31:0   RW Rsa解密输入公钥的位域[1151:1120]
#define RSA_EN_E_VALUE36  0x00000714 //31:0   RW Rsa解密输入公钥的位域[1183:1152]
#define RSA_EN_E_VALUE37  0x00000718 //31:0   RW Rsa解密输入公钥的位域[1215:1184]
#define RSA_EN_E_VALUE38  0x0000071c //31:0   RW Rsa解密输入公钥的位域[1247:1216]
#define RSA_EN_E_VALUE39  0x00000720 //31:0   RW Rsa解密输入公钥的位域[1279:1248]
#define RSA_EN_E_VALUE40  0x00000724 //31:0   RW Rsa解密输入公钥的位域[1311:1280]
#define RSA_EN_E_VALUE41  0x00000728 //31:0   RW Rsa解密输入公钥的位域[1343:1312]
#define RSA_EN_E_VALUE42  0x0000072c //31:0   RW Rsa解密输入公钥的位域[1375:1344]
#define RSA_EN_E_VALUE43  0x00000730 //31:0   RW Rsa解密输入公钥的位域[1407:1376]
#define RSA_EN_E_VALUE44  0x00000734 //31:0   RW Rsa解密输入公钥的位域[1439:1408]
#define RSA_EN_E_VALUE45  0x00000738 //31:0   RW Rsa解密输入公钥的位域[1471:1440]
#define RSA_EN_E_VALUE46  0x0000073c //31:0   RW Rsa解密输入公钥的位域[1503:1472]
#define RSA_EN_E_VALUE47  0x00000740 //31:0   RW Rsa解密输入公钥的位域[1535:1504]
#define RSA_EN_E_VALUE48  0x00000744 //31:0   RW Rsa解密输入公钥的位域[1567:1536]
#define RSA_EN_E_VALUE49  0x00000748 //31:0   RW Rsa解密输入公钥的位域[1599:1568]
#define RSA_EN_E_VALUE50  0x0000074c //31:0   RW Rsa解密输入公钥的位域[1631:1600]
#define RSA_EN_E_VALUE51  0x00000750 //31:0   RW Rsa解密输入公钥的位域[1663:1632]
#define RSA_EN_E_VALUE52  0x00000754 //31:0   RW Rsa解密输入公钥的位域[1695:1664]
#define RSA_EN_E_VALUE53  0x00000758 //31:0   RW Rsa解密输入公钥的位域[1727:1696]
#define RSA_EN_E_VALUE54  0x0000075c //31:0   RW Rsa解密输入公钥的位域[1759:1728]
#define RSA_EN_E_VALUE55  0x00000760 //31:0   RW Rsa解密输入公钥的位域[1791:1760]
#define RSA_EN_E_VALUE56  0x00000764 //31:0   RW Rsa解密输入公钥的位域[1823:1792]
#define RSA_EN_E_VALUE57  0x00000768 //31:0   RW Rsa解密输入公钥的位域[1855:1824]
#define RSA_EN_E_VALUE58  0x0000076c //31:0   RW Rsa解密输入公钥的位域[1887:1856]
#define RSA_EN_E_VALUE59  0x00000770 //31:0   RW Rsa解密输入公钥的位域[1919:1888]
#define RSA_EN_E_VALUE60  0x00000774 //31:0   RW Rsa解密输入公钥的位域[1951:1920]
#define RSA_EN_E_VALUE61  0x00000778 //31:0   RW Rsa解密输入公钥的位域[1983:1952]
#define RSA_EN_E_VALUE62  0x0000077c //31:0   RW Rsa解密输入公钥的位域[2015:1984]
#define RSA_EN_E_VALUE63  0x00000780 //31:0   RW Rsa解密输入公钥的位域[2047:2016]
#define ECCRSA_CONTROL_REG 0x00000784  //
#define ECCRSA_STATE      0x00000788 //
#define R_REG_OUT0        0x0000078c //31:0 R 计算签名r值的位域[31:0]
#define R_REG_OUT1        0x00000790 //31:0 R 计算签名r值的位域[63:32]
#define R_REG_OUT2        0x00000794 //31:0 R 计算签名r值的位域[95:64]
#define R_REG_OUT3        0x00000798 //31:0 R 计算签名r值的位域[127:96]
#define R_REG_OUT4        0x0000079c //31:0 R 计算签名r值的位域[159:128]
#define R_REG_OUT5        0x000007a0 //31:0 R 计算签名r值的位域[191:160]
#define R_REG_OUT6        0x000007a4 //31:0 R 计算签名r值的位域[223:192]
#define R_REG_OUT7        0x000007a8 //31:0 R 计算签名r值的位域[255:224]
#define S_REG_OUT0        0x000007ac //31:0 R 计算签名s值的位域[31:0]
#define S_REG_OUT1        0x000007b0 //31:0 R 计算签名s值的位域[63:32]
#define S_REG_OUT2        0x000007b4 //31:0 R 计算签名s值的位域[95:64]
#define S_REG_OUT3        0x000007b8 //31:0 R 计算签名s值的位域[127:96]
#define S_REG_OUT4        0x000007bc //31:0 R 计算签名s值的位域[159:128]
#define S_REG_OUT5        0x000007c0 //31:0 R 计算签名s值的位域[191:160]
#define S_REG_OUT6        0x000007c4 //31:0 R 计算签名s值的位域[223:192]
#define S_REG_OUT7        0x000007c8 //31:0 R 计算签名s值的位域[255:224]
#define KG_X_OUT0         0x000007cc //31:0 R 输出公钥kg_x值的位域[31:0]
#define KG_X_OUT1         0x000007d0 //31:0 R 输出公钥kg_x值的位域[63:32]
#define KG_X_OUT2         0x000007d4 //31:0 R 输出公钥kg_x值的位域[95:64]
#define KG_X_OUT3         0x000007d8 //31:0 R 输出公钥kg_x值的位域[127:96]
#define KG_X_OUT4         0x000007dc //31:0 R 输出公钥kg_x值的位域[159:128]
#define KG_X_OUT5         0x000007e0 //31:0 R 输出公钥kg_x值的位域[191:160]
#define KG_X_OUT6         0x000007e4 //31:0 R 输出公钥kg_x值的位域[223:192]
#define KG_X_OUT7         0x000007e8 //31:0 R 输出公钥kg_x值的位域[255:224]
#define KG_Y_OUT0         0x000007ec //31:0 R 输出公钥kg_y值的位域[31:0]
#define KG_Y_OUT1         0x000007f0 //31:0 R 输出公钥kg_y值的位域[63:32]
#define KG_Y_OUT2         0x000007f4 //31:0 R 输出公钥kg_y值的位域[95:64]
#define KG_Y_OUT3         0x000007f8 //31:0 R 输出公钥kg_y值的位域[127:96]
#define KG_Y_OUT4         0x000007fc //31:0 R 输出公钥kg_y值的位域[159:128]

#define KG_Y_OUT5         0x00000800//31:0 R 输出公钥kg_y值的位域[191:160]
#define KG_Y_OUT6         0x00000804//31:0 R 输出公钥kg_y值的位域[223:192]
#define KG_Y_OUT7         0x00000808//31:0 R 输出公钥kg_y值的位域[255:224]
#define RSA_EN_Y_VALUE0   0x0000080c//31:0   RW Rsa解密输出数据的位域[31:0]
#define RSA_EN_Y_VALUE1   0x00000810//31:0   RW Rsa解密输出数据的位域[63:32]
#define RSA_EN_Y_VALUE2   0x00000814//31:0   RW Rsa解密输出数据的位域[95:64]
#define RSA_EN_Y_VALUE3   0x00000818//31:0   RW Rsa解密输出数据的位域[127:96]
#define RSA_EN_Y_VALUE4   0x0000081c//31:0   RW Rsa解密输出数据的位域[159:128]
#define RSA_EN_Y_VALUE5   0x00000820//31:0   RW Rsa解密输出数据的位域[191:160]
#define RSA_EN_Y_VALUE6   0x00000824//31:0   RW Rsa解密输出数据的位域[223:192]
#define RSA_EN_Y_VALUE7   0x00000828//31:0   RW Rsa解密输出数据的位域[255:224]
#define RSA_EN_Y_VALUE8   0x0000082c//31:0   RW Rsa解密输出数据的位域[287:256]
#define RSA_EN_Y_VALUE9   0x00000830//31:0   RW Rsa解密输出数据的位域[319:288]
#define RSA_EN_Y_VALUE10  0x00000834//31:0   RW Rsa解密输出数据的位域[351:320]
#define RSA_EN_Y_VALUE11  0x00000838//31:0   RW Rsa解密输出数据的位域[383:352]
#define RSA_EN_Y_VALUE12  0x0000083c//31:0   RW Rsa解密输出数据的位域[415:384]
#define RSA_EN_Y_VALUE13  0x00000840//31:0   RW Rsa解密输出数据的位域[447:416]
#define RSA_EN_Y_VALUE14  0x00000844//31:0   RW Rsa解密输出数据的位域[479:448]
#define RSA_EN_Y_VALUE15  0x00000848//31:0   RW Rsa解密输出数据的位域[511:480]
#define RSA_EN_Y_VALUE16  0x0000084c//31:0   RW Rsa解密输出数据的位域[543:512]
#define RSA_EN_Y_VALUE17  0x00000850//31:0   RW Rsa解密输出数据的位域[575:544]
#define RSA_EN_Y_VALUE18  0x00000854//31:0   RW Rsa解密输出数据的位域[607:576]
#define RSA_EN_Y_VALUE19  0x00000858//31:0   RW Rsa解密输出数据的位域[639:608]
#define RSA_EN_Y_VALUE20  0x0000085c//31:0   RW Rsa解密输出数据的位域[671:640]
#define RSA_EN_Y_VALUE21  0x00000860//31:0   RW Rsa解密输出数据的位域[703:672]
#define RSA_EN_Y_VALUE22  0x00000864//31:0   RW Rsa解密输出数据的位域[735:704]
#define RSA_EN_Y_VALUE23  0x00000868//31:0   RW Rsa解密输出数据的位域[767:736]
#define RSA_EN_Y_VALUE24  0x0000086c//31:0   RW Rsa解密输出数据的位域[799:768]
#define RSA_EN_Y_VALUE25  0x00000870//31:0   RW Rsa解密输出数据的位域[831:800]
#define RSA_EN_Y_VALUE26  0x00000874//31:0   RW Rsa解密输出数据的位域[863:832]
#define RSA_EN_Y_VALUE27  0x00000878//31:0   RW Rsa解密输出数据的位域[895:864]
#define RSA_EN_Y_VALUE28  0x0000087c//31:0   RW Rsa解密输出数据的位域[927:896]
#define RSA_EN_Y_VALUE29  0x00000880//31:0   RW Rsa解密输出数据的位域[959:928]
#define RSA_EN_Y_VALUE30  0x00000884//31:0   RW Rsa解密输出数据的位域[991:960]
#define RSA_EN_Y_VALUE31  0x00000888//31:0   RW Rsa解密输出数据的位域[1023:992]
#define RSA_EN_Y_VALUE32  0x0000088c//31:0   RW Rsa解密输出数据的位域[1055:1024]
#define RSA_EN_Y_VALUE33  0x00000890//31:0   RW Rsa解密输出数据的位域[1087:1056]
#define RSA_EN_Y_VALUE34  0x00000894//31:0   RW Rsa解密输出数据的位域[1119:1088]
#define RSA_EN_Y_VALUE35  0x00000898//31:0   RW Rsa解密输出数据的位域[1151:1120]
#define RSA_EN_Y_VALUE36  0x0000089c//31:0   RW Rsa解密输出数据的位域[1183:1152]
#define RSA_EN_Y_VALUE37  0x000008a0//31:0   RW Rsa解密输出数据的位域[1215:1184]
#define RSA_EN_Y_VALUE38  0x000008a4//31:0   RW Rsa解密输出数据的位域[1247:1216]
#define RSA_EN_Y_VALUE39  0x000008a8//31:0   RW Rsa解密输出数据的位域[1279:1248]
#define RSA_EN_Y_VALUE40  0x000008ac//31:0   RW Rsa解密输出数据的位域[1311:1280]
#define RSA_EN_Y_VALUE41  0x000008b0//31:0   RW Rsa解密输出数据的位域[1343:1312]
#define RSA_EN_Y_VALUE42  0x000008b4//31:0   RW Rsa解密输出数据的位域[1375:1344]
#define RSA_EN_Y_VALUE43  0x000008b8//31:0   RW Rsa解密输出数据的位域[1407:1376]
#define RSA_EN_Y_VALUE44  0x000008bc//31:0   RW Rsa解密输出数据的位域[1439:1408]
#define RSA_EN_Y_VALUE45  0x000008c0//31:0   RW Rsa解密输出数据的位域[1471:1440]
#define RSA_EN_Y_VALUE46  0x000008c4//31:0   RW Rsa解密输出数据的位域[1503:1472]
#define RSA_EN_Y_VALUE47  0x000008c8//31:0   RW Rsa解密输出数据的位域[1535:1504]
#define RSA_EN_Y_VALUE48  0x000008cc//31:0   RW Rsa解密输出数据的位域[1567:1536]
#define RSA_EN_Y_VALUE49  0x000008d0//31:0   RW Rsa解密输出数据的位域[1599:1568]
#define RSA_EN_Y_VALUE50  0x000008d4//31:0   RW Rsa解密输出数据的位域[1631:1600]
#define RSA_EN_Y_VALUE51  0x000008d8//31:0   RW Rsa解密输出数据的位域[1663:1632]
#define RSA_EN_Y_VALUE52  0x000008dc//31:0   RW Rsa解密输出数据的位域[1695:1664]
#define RSA_EN_Y_VALUE53  0x000008e0//31:0   RW Rsa解密输出数据的位域[1727:1696]
#define RSA_EN_Y_VALUE54  0x000008e4//31:0   RW Rsa解密输出数据的位域[1759:1728]
#define RSA_EN_Y_VALUE55  0x000008e8//31:0   RW Rsa解密输出数据的位域[1791:1760]
#define RSA_EN_Y_VALUE56  0x000008ec//31:0   RW Rsa解密输出数据的位域[1823:1792]
#define RSA_EN_Y_VALUE57  0x000008f0//31:0   RW Rsa解密输出数据的位域[1855:1824]
#define RSA_EN_Y_VALUE58  0x000008f4//31:0   RW Rsa解密输出数据的位域[1887:1856]
#define RSA_EN_Y_VALUE59  0x000008f8//31:0   RW Rsa解密输出数据的位域[1919:1888]
#define RSA_EN_Y_VALUE60  0x000008fc//31:0   RW Rsa解密输出数据的位域[1951:1920]

#define RSA_EN_Y_VALUE61  0x00000900 //31:0   RW Rsa解密输出数据的位域[1983:1952]
#define RSA_EN_Y_VALUE62  0x00000904 //31:0   RW Rsa解密输出数据的位域[2015:1984]
#define RSA_EN_Y_VALUE63  0x00000908 //31:0   RW Rsa解密输出数据的位域[2047:2016]
#define RSA_DE_Y_VALUE0   0x0000090c //31:0   RW Rsa解密输入参数的位域[31:0]
#define RSA_DE_Y_VALUE1   0x00000910 //31:0   RW Rsa解密输入参数的位域[63:32]
#define RSA_DE_Y_VALUE2   0x00000914 //31:0   RW Rsa解密输入参数的位域[95:64]
#define RSA_DE_Y_VALUE3   0x00000918 //31:0   RW Rsa解密输入参数的位域[127:96]
#define RSA_DE_Y_VALUE4   0x0000091c //31:0   RW Rsa解密输入参数的位域[159:128]
#define RSA_DE_Y_VALUE5   0x00000920 //31:0   RW Rsa解密输入参数的位域[191:160]
#define RSA_DE_Y_VALUE6   0x00000924 //31:0   RW Rsa解密输入参数的位域[223:192]
#define RSA_DE_Y_VALUE7   0x00000928 //31:0   RW Rsa解密输入参数的位域[255:224]
#define RSA_DE_Y_VALUE8   0x0000092c //31:0   RW Rsa解密输入参数的位域[287:256]
#define RSA_DE_Y_VALUE9   0x00000930 //31:0   RW Rsa解密输入参数的位域[319:288]
#define RSA_DE_Y_VALUE10  0x00000934 //31:0   RW Rsa解密输入参数的位域[351:320]
#define RSA_DE_Y_VALUE11  0x00000938 //31:0   RW Rsa解密输入参数的位域[383:352]
#define RSA_DE_Y_VALUE12  0x0000093c //31:0   RW Rsa解密输入参数的位域[415:384]
#define RSA_DE_Y_VALUE13  0x00000940 //31:0   RW Rsa解密输入参数的位域[447:416]
#define RSA_DE_Y_VALUE14  0x00000944 //31:0   RW Rsa解密输入参数的位域[479:448]
#define RSA_DE_Y_VALUE15  0x00000948 //31:0   RW Rsa解密输入参数的位域[511:480]
#define RSA_DE_Y_VALUE16  0x0000094c //31:0   RW Rsa解密输入参数的位域[543:512]
#define RSA_DE_Y_VALUE17  0x00000950 //31:0   RW Rsa解密输入参数的位域[575:544]
#define RSA_DE_Y_VALUE18  0x00000954 //31:0   RW Rsa解密输入参数的位域[607:576]
#define RSA_DE_Y_VALUE19  0x00000958 //31:0   RW Rsa解密输入参数的位域[639:608]
#define RSA_DE_Y_VALUE20  0x0000095c //31:0   RW Rsa解密输入参数的位域[671:640]
#define RSA_DE_Y_VALUE21  0x00000960 //31:0   RW Rsa解密输入参数的位域[703:672]
#define RSA_DE_Y_VALUE22  0x00000964 //31:0   RW Rsa解密输入参数的位域[735:704]
#define RSA_DE_Y_VALUE23  0x00000968 //31:0   RW Rsa解密输入参数的位域[767:736]
#define RSA_DE_Y_VALUE24  0x0000096c //31:0   RW Rsa解密输入参数的位域[799:768]
#define RSA_DE_Y_VALUE25  0x00000970 //31:0   RW Rsa解密输入参数的位域[831:800]
#define RSA_DE_Y_VALUE26  0x00000974 //31:0   RW Rsa解密输入参数的位域[863:832]
#define RSA_DE_Y_VALUE27  0x00000978 //31:0   RW Rsa解密输入参数的位域[895:864]
#define RSA_DE_Y_VALUE28  0x0000097c //31:0   RW Rsa解密输入参数的位域[927:896]
#define RSA_DE_Y_VALUE29  0x00000980 //31:0   RW Rsa解密输入参数的位域[959:928]
#define RSA_DE_Y_VALUE30  0x00000984 //31:0   RW Rsa解密输入参数的位域[991:960]
#define RSA_DE_Y_VALUE31  0x00000988 //31:0   RW Rsa解密输入参数的位域[1023:992]
#define RSA_DE_Y_VALUE32  0x0000098c //31:0   RW Rsa解密输入参数的位域[1055:1024]
#define RSA_DE_Y_VALUE33  0x00000990 //31:0   RW Rsa解密输入参数的位域[1087:1056]
#define RSA_DE_Y_VALUE34  0x00000994 //31:0   RW Rsa解密输入参数的位域[1119:1088]
#define RSA_DE_Y_VALUE35  0x00000998 //31:0   RW Rsa解密输入参数的位域[1151:1120]
#define RSA_DE_Y_VALUE36  0x0000099c //31:0   RW Rsa解密输入参数的位域[1183:1152]
#define RSA_DE_Y_VALUE37  0x000009a0 //31:0   RW Rsa解密输入参数的位域[1215:1184]
#define RSA_DE_Y_VALUE38  0x000009a4 //31:0   RW Rsa解密输入参数的位域[1247:1216]
#define RSA_DE_Y_VALUE39  0x000009a8 //31:0   RW Rsa解密输入参数的位域[1279:1248]
#define RSA_DE_Y_VALUE40  0x000009ac //31:0   RW Rsa解密输入参数的位域[1311:1280]
#define RSA_DE_Y_VALUE41  0x000009b0 //31:0   RW Rsa解密输入参数的位域[1343:1312]
#define RSA_DE_Y_VALUE42  0x000009b4 //31:0   RW Rsa解密输入参数的位域[1375:1344]
#define RSA_DE_Y_VALUE43  0x000009b8 //31:0   RW Rsa解密输入参数的位域[1407:1376]
#define RSA_DE_Y_VALUE44  0x000009bc //31:0   RW Rsa解密输入参数的位域[1439:1408]
#define RSA_DE_Y_VALUE45  0x000009c0 //31:0   RW Rsa解密输入参数的位域[1471:1440]
#define RSA_DE_Y_VALUE46  0x000009c4 //31:0   RW Rsa解密输入参数的位域[1503:1472]
#define RSA_DE_Y_VALUE47  0x000009c8 //31:0   RW Rsa解密输入参数的位域[1535:1504]
#define RSA_DE_Y_VALUE48  0x000009cc //31:0   RW Rsa解密输入参数的位域[1567:1536]
#define RSA_DE_Y_VALUE49  0x000009d0 //31:0   RW Rsa解密输入参数的位域[1599:1568]
#define RSA_DE_Y_VALUE50  0x000009d4 //31:0   RW Rsa解密输入参数的位域[1631:1600]
#define RSA_DE_Y_VALUE51  0x000009d8 //31:0   RW Rsa解密输入参数的位域[1663:1632]
#define RSA_DE_Y_VALUE52  0x000009dc //31:0   RW Rsa解密输入参数的位域[1695:1664]
#define RSA_DE_Y_VALUE53  0x000009e0 //31:0   RW Rsa解密输入参数的位域[1727:1696]
#define RSA_DE_Y_VALUE54  0x000009e4 //31:0   RW Rsa解密输入参数的位域[1759:1728]
#define RSA_DE_Y_VALUE55  0x000009e8 //31:0   RW Rsa解密输入参数的位域[1791:1760]
#define RSA_DE_Y_VALUE56  0x000009ec //31:0   RW Rsa解密输入参数的位域[1823:1792]
#define RSA_DE_Y_VALUE57  0x000009f0 //31:0   RW Rsa解密输入参数的位域[1855:1824]
#define RSA_DE_Y_VALUE58  0x000009f4 //31:0   RW Rsa解密输入参数的位域[1887:1856]
#define RSA_DE_Y_VALUE59  0x000009f8 //31:0   RW Rsa解密输入参数的位域[1919:1888]
#define RSA_DE_Y_VALUE60  0x000009fc //31:0   RW Rsa解密输入参数的位域[1951:1920]

#define RSA_DE_Y_VALUE61  0x00000a00   //31:0   RW Rsa解密输入参数的位域[1983:1952]
#define RSA_DE_Y_VALUE62  0x00000a04   //31:0   RW Rsa解密输入参数的位域[2015:1984]
#define RSA_DE_Y_VALUE63  0x00000a08   //31:0   RW Rsa解密输入参数的位域[2047:2016]
#define ECCRSA_IRQ_REG    0x00000a0c   //31:27  RW interrupt reg: 31:kg_data_out_irq; 30:ecdsa_cal_data_out_irq; 29:ecdsa_verify_data_out_irq; 28:rsa_en_exp_mod_data_out_irq; 27:rsa_de_exp_mod_data_out_irq;
#define LIDW_TEST_REG     0x00000a10   //



void test(void)
{
		unsigned int *data = (unsigned int*)0x80000000;
		//unsigned int addr = OTP_USER_MODULUS_START_ADDR;
		unsigned int addr2 = ECC_BASE_ADDR + RSA_DE_X_VALUE0;
		unsigned int value = 0;

		unsigned int value2 = 0;



	unsigned int  status = *(volatile unsigned int *)(ECC_BASE_ADDR + ECCRSA_STATE);
	printf("status 0x%x\n",status);


		for(int i=0; i<64; i++)
		{
			value = *((volatile unsigned int*)data);
			//value = ReverseIntByte(value);
			printf("modulus addr2:0x%x, value:0x%08x\n",addr2,value);
			*(unsigned int *)(addr2) = value;

			value2	= *(volatile unsigned int *)(addr2);
			if(value != value2)
			{
				
				printf("1111111 value2 != value \n");
			}

			data++;
			addr2 += 4;
		}
			
	unsigned int addr = OTP_KEY_MODULUS_START_ADDR;
	addr2 = ECC_BASE_ADDR + RSA_DE_N_VALUE0;
	//update modulus
	for(int i=0; i<64; i++)
	{
		value = ReadKeyAreaData(addr);
		printf(" addr:0x%0x, addr2:0x%0x,value:0x%x\n",addr,addr2,value);
		*(volatile unsigned int *)(addr2) = value;

		value2	= *(volatile unsigned int *)(addr2);
		if(value != value2)
		{
	
			printf("2222222 value2 != value \n");
		}



		addr++;
		addr2 += 4;
	}
	//update public
	addr =  OTP_KEY_PUBLIC_START_ADDR;
	addr2 = ECC_BASE_ADDR + RSA_DE_D_VALUE0;
	for(int i=0; i<64; i++)
	{
		value = ReadKeyAreaData(addr);
		printf(" addr:0x%0x, addr2:0x%0x,value:0x%x\n",addr,addr2,value);
		*(volatile unsigned int *)(addr2) = value;
		value2	= *(volatile unsigned int *)(addr2);
		if(value != value2)
		{
			
			printf("33333 value2 != value \n");
		}
		addr++;
		addr2 += 4;
	}

	*(volatile unsigned int *)(ECC_BASE_ADDR + ECCRSA_CONTROL_REG) = 1<<14;
	 status = *(volatile unsigned int *)(ECC_BASE_ADDR + ECCRSA_STATE);
	printf("status 0x%x\n",status);
	unsigned int  i = status&(1<<14);
	while(i!=1<<14)
	{
		status = *(unsigned int *)(ECC_BASE_ADDR + ECCRSA_STATE);
		i = status&(1<<14);
		printf("status : 0x%x, i:0x%x",status,i);
		udelay(10000);
	}

	/////read decrypt data
	for(unsigned int j=0;j<64;j++)
	{
		unsigned int data2 = *(volatile unsigned int *)(ECC_BASE_ADDR + RSA_DE_Y_VALUE63 - j*4);
			printf("0x%x\n",data2);
//      	      	 uart(data);
	}



			return;
}


